// https://leetcode.cn/problems/valid-parentheses/?envType=study-plan-v2&envId=top-100-liked
// 20. 有效的括号
// 简单
// 提示
// 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
// 有效字符串需满足：
// 左括号必须用相同类型的右括号闭合。
// 左括号必须以正确的顺序闭合。
// 每个右括号都有一个对应的相同类型的左括号。

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
  const sk = []
  const lC = ['(', '[', '{']
  const dict = {
    '(': ')',
    '[': ']',
    '{': '}'
  }

  for (const ch of s) {
    // 碰到左括号入栈
    if (lC.includes(ch)) {
      sk.push(ch)
    } else {
      // 碰到右括号出栈对比
      const peek = sk.pop()
      if (dict[peek] !== ch) {
        return false
      }
    }
  }

  // 栈空则合法
  return !sk.length
}

console.log(
  isValid('])')
)


















